using System;
using System.Data;
using System.ComponentModel;
using System.Reflection;
using System.Collections.Generic;
using DataObject.Helpers;

namespace DataObject.Model
{
	[Serializable]
	public class ReservationPaymentDTO : DTOBase
	{
        public ReservationPaymentDTO()
        {
            ReservationPaymentID = Helper.NewSeqGuid();
        }

		#region Reference property Members

		private PaymentBatchDTO _paymentBatch = new PaymentBatchDTO();
		public PaymentBatchDTO PaymentBatch
		{
			get
			{
				return _paymentBatch;
			}
			set
			{
				if (_paymentBatch != value)
				{
					_paymentBatch = value;
				}
			}
		}
		private ReservationDTO _reservation = new ReservationDTO();
		public ReservationDTO Reservation
		{
			get
			{
				return _reservation;
			}
			set
			{
				if (_reservation != value)
				{
					_reservation = value;
				}
			}
		}

		#endregion

		#region Collection Members


		#endregion

		#region Property IsDeposit

		private bool _isDeposit;

		/// <summary>
		///  Property IsDeposit
		/// <summary>
		public bool IsDeposit
		{
			get
			{
				return _isDeposit;
			}

			set
			{
				if (_isDeposit != value)
				{
					this.OnIsDepositChanging(value);
					_isDeposit = value;
					this.OnIsDepositChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property PaymentBatchID

		private Guid _paymentBatchID;

		/// <summary>
		///  Property PaymentBatchID
		/// <summary>
		public Guid PaymentBatchID
		{
			get
			{
				return _paymentBatchID;
			}

			set
			{
				if (_paymentBatchID != value)
				{
					this.OnPaymentBatchIDChanging(value);
					_paymentBatchID = value;
					this.OnPaymentBatchIDChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property ReservationID

		private Guid _reservationID;

		/// <summary>
		///  Property ReservationID
		/// <summary>
		public Guid ReservationID
		{
			get
			{
				return _reservationID;
			}

			set
			{
				if (_reservationID != value)
				{
					this.OnReservationIDChanging(value);
					_reservationID = value;
					this.OnReservationIDChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Property ReservationPaymentID

		private Guid _reservationPaymentID;

		/// <summary>
		///  Property ReservationPaymentID
		/// <summary>
		public Guid ReservationPaymentID
		{
			get
			{
				return _reservationPaymentID;
			}

			set
			{
				if (_reservationPaymentID != value)
				{
					this.OnReservationPaymentIDChanging(value);
					_reservationPaymentID = value;
					this.OnReservationPaymentIDChanged();
					OnChanged();
				}
			}
		}

		#endregion

		#region Extensibility Method Declarations

		protected virtual void OnIsDepositChanging(bool isDeposit) { }
		protected virtual void OnIsDepositChanged() { }
		protected virtual void OnPaymentBatchIDChanging(Guid paymentBatchID) { }
		protected virtual void OnPaymentBatchIDChanged() { }
		protected virtual void OnReservationIDChanging(Guid reservationID) { }
		protected virtual void OnReservationIDChanged() { }
		protected virtual void OnReservationPaymentIDChanging(Guid reservationPaymentID) { }
		protected virtual void OnReservationPaymentIDChanged() { }

		#endregion

	}
}
